package com.cook.mapper;

import com.cook.entity.RecipeTags;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cook.vo.recipes.TagsVO;
import com.cook.vo.recipes.RecipeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author black-white spider
* @description 针对表【recipe_tags(食谱-标签关联表)】的数据库操作Mapper
* @createDate 2025-10-27 19:55:23
* @Entity com.cook.entity.RecipeTags
*/
@Mapper
public interface RecipeTagsMapper extends BaseMapper<RecipeTags> {
    /**
     * 根据标签ID查询菜谱列表
     * @param tagId 标签ID
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 菜谱列表
     */
    List<RecipeVO> selectRecipesByTagId(@Param("tagId") Long tagId,
                                        @Param("offset") Integer offset,
                                        @Param("limit") Integer limit);

    /**
     * 根据标签ID查询菜谱数量
     * @param tagId 标签ID
     * @return 菜谱数量
     */
    int selectRecipesCountByTagId(@Param("tagId") Long tagId);

    /**
     * 根据菜谱ID查询标签列表
     * @param recipeId 菜谱ID
     * @return 标签列表
     */
    List<TagsVO> selectTagsByRecipeId(@Param("recipeId") Long recipeId);

    /**
     * 插入菜谱标签关联
     * @param recipeTags 关联实体
     * @return 影响行数
     */
    int insertRecipeTag(RecipeTags recipeTags);

    /**
     * 根据菜谱ID和标签ID删除关联
     * @param recipeId 菜谱ID
     * @param tagId 标签ID
     * @return 影响行数
     */
    int deleteRecipeTag(@Param("recipeId") Long recipeId, @Param("tagId") Long tagId);

    /**
     * 检查菜谱标签关联是否存在
     * @param recipeId 菜谱ID
     * @param tagId 标签ID
     * @return 是否存在
     */
    int checkRecipeTagExists(@Param("recipeId") Long recipeId, @Param("tagId") Long tagId);

    /**
     * 根据标签ID删除所有关联
     * @param tagId 标签ID
     * @return 影响行数
     */
    int deleteAllRecipeTagsByTagId(@Param("tagId") Long tagId);
}




